/*******************************FONCTION DE CALLBACK***************************************/
//Fonction de creation du menu :
//récupère les données de la requete
//les traitent afin de créer les boutons du menu
function callback_menu() 
{
  if (connexion.readyState == 4) //données entierement reçues
  {
    var collection = eval(connexion.responseText); //récupération des données (format JSON)  
    var selection = $('#menu'); //DIV qui va contenir les nouveaux éléments (h3, input)
    
    $(document).ready(function() { //le document est entierement chargé
      selection.append('<h3> Equipements : <h3>');
      selection.append('<br/>');
      
      for (var i = 0; i < collection.length; i++) //parcours des élément de notre collection
      {
	var new_button = jQuery('<input type="button" id="'+collection[i].nom_piece+'" class="unpushed" value="'+collection[i].nom_piece+'" />'); //creation d'un bouton
	new_button.one('click', {ind : 0}, button_connect);
	selection.append(new_button); //on rajoute notre bouton a la page
	if (i < (collection.length - 1))
	{
	  selection.append('<br/>');
	}
      }
    });
  }
}

//Fonction de création de formulaire
//récupère les données de la requête
//les traitent afin de créer un formulaire pour un lieu de la maison
function callback_formulaire()
{
  if (connexion.readyState == 4) //données entierement reçues
  {
    var collection = eval(connexion.responseText); //récupération des données (format JSON)  
    var selection = $('#form-container'); //DIV qui va contenir les nouveaux éléments (label, div)
    
    $(document).ready(function() { //document entièrement chargé
      if (collection.length == 1) 
      {
	selection.append('<label> Il n\'y a pas d\'objet a cette emplacement </label>');
      }
      else
      {
 	selection.append('<div id="'+collection[0].lieu+'FORM" class="formulaire"> </div>'); //ajout d'une nouvelle DIV qui contiendra le formulaire d'un lieu de la maison
	selection = $('#'+collection[0].lieu+'FORM'); //DIV qui va contenir les nouveaux éléments (label, input)
	selection.append('<label class="titreFormulaire">'+collection[0].lieu+' : </label>');
	selection.append('<br/>');
	for (var i = 1; i < collection.length; i++) //parcours de notre collection
	{
	  selection.append('<label class="titreType">'+collection[i].type+' : </label> <br/>');
	  input_radio(selection, collection[i]); //rajoute les input radio correspondant à chaque objet de la pièce
	  selection.append('<br/>');	
	}
      }  
    });
  }
}

//Fonction de mise à jour de l'affichage en fonction du retour de la requête
function update() //a modifier
{
  if (connexion.readyState == 4)
  {
    var collection = eval(connexion.responseText);
    $('#'+collection[0].id).attr('value', collection[0].valeur);
  }
}

//Fonction de callback qui modifie la class (toShow / toHide) du bouton appelant
//event : contient l'objet javascript passé en second parametre de la fonction one(signal, data, callback) 
function button_connect(event)
{
  if (event.data.ind == 0)
  {
  $(this).attr('class', 'pushed'); //modification de la class
  chargement('traitement.php?fonction=formulaire&lieu='+$(this).attr('id'), callback_formulaire); //requete au serveur => resultat traité par callback_formulaire()
  $(this).one('click', {ind : (event.data.ind + 1)}, button_connect); //on reconnecte notre bouton au signal click
  }
  else
  {
  $(this).attr('class', 'unpushed');
  destroy('#'+$(this).attr('id')+'FORM');
  $(this).one('click', {ind : (event.data.ind - 1)}, button_connect);
  }
}

//Fonction permettant d'enlever un formulaire
//toDestroy : contient une chaine de caractére représentant l'id de la balise <div> a détruire
function destroy(toDestroy)  
{
  $(toDestroy).find('input.toShow').each(function() { //.find('input.toShow') correspond a tout les inputs ayant pour class="toShow" dans la descendance de la DIV d'id=toDestroy
	chargement('traitement.php?fonction=update&id='+$(this).attr('id')+'&valeur='+$(this).attr('value')+'&etat=1', update); //requete au serveur => resultat traité par update()
  });
  $(toDestroy).find('input.toHide').each(function() {
	chargement('traitement.php?fonction=update&id='+$(this).attr('id')+'&valeur='+$(this).attr('value')+'&etat=0', update);
  });
  $(toDestroy).remove(); //suppression de la DIV ainsi que de tous ses descendants
}
